--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / tests / backend / test_reticulum_instance_settings.py
Displaying Raw • Download
tests/backend/test_reticulum_instance_settings.py 59c3a0c47e87e8db699d25b757bb7b599215ddbd (59c3a0c4) Text, 16.06 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72import T7ee787json
Tff7b72import T7ee787shutil
Tff7b72import T7ee787tempfile
Tff7b72from T7ee787unittestT7ee787.T7ee787mock Tff7b72import Te6edf3AsyncMockTb4b4b4, Te6edf3MagicMockTb4b4b4, Te6edf3patch
Tff7b72import T7ee787pytest
Tff7b72import T7ee787RNS
Tff7b72from T7ee787hypothesis Tff7b72import Te6edf3HealthCheckTb4b4b4, Te6edf3givenTb4b4b4, Te6edf3settings
Tff7b72from T7ee787hypothesis Tff7b72import Te6edf3strategies Tff7b72as Te6edf3st
Tff7b72from T7ee787meshchatxT7ee787.T7ee787meshchat Tff7b72import Te6edf3ReticulumMeshChat
Tff7b72class T56d364ConfigDictTb4b4b4(Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwrite_called Tff7b72= Tff7b72False
Tff7b72def Td2a8ffwriteTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffwrite_called Tff7b72= Tff7b72True
Tff7b72return Tff7b72True
Tf0883e@pytestTff7b72.Td2a8fffixture
Tff7b72def Td2a8fftemp_dirTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3path Tff7b72= Te6edf3tempfileTff7b72.Td2a8ffmkdtempTb4b4b4(Tb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72yield Te6edf3path
Tff7b72finallyTb4b4b4:
Te6edf3shutilTff7b72.Td2a8ffrmtreeTb4b4b4(Te6edf3pathTb4b4b4)
Tff7b72def Td2a8ffbuild_identityTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3identity Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3specTff7b72=Te6edf3RNSTff7b72.Td2a8ffIdentityTb4b4b4)
Te6edf3identityTff7b72.Td2a8ffhash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6fftest_hash_32_bytes_long_01234567Ta5d6ff"
Te6edf3identityTff7b72.Td2a8ffhexhash Tff7b72= Te6edf3identityTff7b72.Td2a8ffhashTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4)
Te6edf3identityTff7b72.Td2a8ffget_private_keyTff7b72.Td2a8ffreturn_value Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6fftest_private_keyTa5d6ff"
Tff7b72return Te6edf3identity
Tff7b72async Tff7b72def Td2a8fffind_route_handlerTb4b4b4(Te6edf3app_instanceTb4b4b4, Te6edf3pathTb4b4b4, Te6edf3methodTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3route Tff7b72in Te6edf3app_instanceTff7b72.Td2a8ffget_routesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3routeTff7b72.Td2a8ffpath Tff7b72== Te6edf3path Tff7b72and Te6edf3routeTff7b72.Td2a8ffmethod Tff7b72== Te6edf3methodTb4b4b4:
Tff7b72return Te6edf3routeTff7b72.Td2a8ffhandler
Tff7b72return Tff7b72None
Tff7b72def Td2a8fftest_parse_rns_config_boolTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_parse_rns_config_boolTb4b4b4(Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4) Tff7b72is Tff7b72True
Tff7b72assert Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_parse_rns_config_boolTb4b4b4(Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4) Tff7b72is Tff7b72False
Tff7b72assert Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_parse_rns_config_boolTb4b4b4(Tff7b72TrueTb4b4b4) Tff7b72is Tff7b72True
Tff7b72assert Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_parse_rns_config_boolTb4b4b4(Tff7b72NoneTb4b4b4, Te6edf3defaultTff7b72=Tff7b72TrueTb4b4b4) Tff7b72is Tff7b72True
Tff7b72assert Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_format_rns_config_boolTb4b4b4(Tff7b72TrueTb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffYesTa5d6ff"
Tff7b72assert Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_format_rns_config_boolTb4b4b4(Tff7b72FalseTb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffNoTa5d6ff"
Tf0883e@givenTb4b4b4(
Te6edf3rawTff7b72=Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(
Te6edf3stTff7b72.Td2a8ffbooleansTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffsampled_fromTb4b4b4(
Tb4b4b4[
Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffyesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffTRUETa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffalseTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff Yes Ta5d6ff"Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffintegersTb4b4b4(Te6edf3min_valueTff7b72=Tff7b72-T79c0ff3Tb4b4b4, Te6edf3max_valueTff7b72=T79c0ff3Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffnoneTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3defaultTff7b72=Te6edf3stTff7b72.Td2a8ffbooleansTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tf0883e@settingsTb4b4b4(Te6edf3max_examplesTff7b72=T79c0ff80Tb4b4b4)
Tff7b72def Td2a8fftest_parse_rns_config_bool_fuzzTb4b4b4(Te6edf3rawTb4b4b4, Te6edf3defaultTb4b4b4)Tb4b4b4:
Te6edf3result Tff7b72= Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_parse_rns_config_boolTb4b4b4(Te6edf3rawTb4b4b4, Te6edf3defaultTff7b72=Te6edf3defaultTb4b4b4)
Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3resultTb4b4b4, Tffa657boolTb4b4b4)
Te6edf3formatted Tff7b72= Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_format_rns_config_boolTb4b4b4(Te6edf3resultTb4b4b4)
Tff7b72assert Te6edf3formatted Tff7b72in Tb4b4b4(Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_parse_rns_config_boolTb4b4b4(Te6edf3formattedTb4b4b4) Tff7b72is Te6edf3result
Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_reticulum_instance_get_and_patchTb4b4b4(Te6edf3temp_dirTb4b4b4)Tb4b4b4:
Te6edf3config Tff7b72= Te6edf3ConfigDictTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffenable_transportTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffrespond_to_probesTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffenable_remote_managementTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_management_allowedTa5d6ff"Tb4b4b4: Tb4b4b4[
Ta5d6ff"Ta5d6ffaabbccddeeff00112233445566778899Ta5d6ff"Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftcpTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffrpc_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffaabbccddeeff00112233445566778899aabbccddeeff00112233445566778899Ta5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72with Tb4b4b4(
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.generate_ssl_certificateTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.ReticulumTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_rnsTb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.TransportTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffLXMF.LXMRouterTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3mock_reticulum Tff7b72= Te6edf3mock_rnsTff7b72.Td2a8ffreturn_value
Te6edf3mock_reticulumTff7b72.Td2a8ffconfig Tff7b72= Te6edf3config
Te6edf3mock_reticulumTff7b72.Td2a8ffconfigpath Tff7b72= Ta5d6ff"Ta5d6ff/tmp/mock_configTa5d6ff"
Te6edf3mock_reticulumTff7b72.Td2a8ffis_connected_to_shared_instance Tff7b72= Tff7b72False
Te6edf3mock_reticulumTff7b72.Td2a8ffshare_instance Tff7b72= Tff7b72True
Te6edf3mock_reticulumTff7b72.Td2a8ffshared_instance_type Tff7b72= Ta5d6ff"Ta5d6fftcpTa5d6ff"
Te6edf3mock_reticulumTff7b72.Td2a8ffrpc_key Tff7b72= Tffa657bytesTff7b72.Td2a8fffromhexTb4b4b4(
Ta5d6ff"Ta5d6ffaabbccddeeff00112233445566778899aabbccddeeff00112233445566778899Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3mock_reticulumTff7b72.Td2a8fftransport_enabledTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3app_instance Tff7b72= Te6edf3ReticulumMeshChatTb4b4b4(
Te6edf3identityTff7b72=Te6edf3build_identityTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3storage_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Te6edf3reticulum_config_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Tb4b4b4)
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulum Tff7b72= Te6edf3AsyncMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3get_handler Tff7b72= Tff7b72await Te6edf3find_route_handlerTb4b4b4(
Te6edf3app_instanceTb4b4b4,
Ta5d6ff"Ta5d6ff/api/v1/reticulum/instanceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffGETTa5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3patch_handler Tff7b72= Tff7b72await Te6edf3find_route_handlerTb4b4b4(
Te6edf3app_instanceTb4b4b4,
Ta5d6ff"Ta5d6ff/api/v1/reticulum/instanceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffPATCHTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3get_handler Tff7b72and Te6edf3patch_handler
Te6edf3get_response Tff7b72= Tff7b72await Te6edf3get_handlerTb4b4b4(Te6edf3MagicMockTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3get_data Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3get_responseTff7b72.Td2a8ffbodyTb4b4b4)
Tff7b72assert Te6edf3get_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3get_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72assert Te6edf3get_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6fftcpTa5d6ff"
Tff7b72assert Te6edf3get_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffremote_management_allowedTa5d6ff"Tb4b4b4] Tff7b72== Tb4b4b4[
Ta5d6ff"Ta5d6ffaabbccddeeff00112233445566778899Ta5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72assert Te6edf3get_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffrpc_config_snippetTa5d6ff"Tb4b4b4]
Tff7b72assert Ta5d6ff"Ta5d6ffrpc_key =Ta5d6ff" Tff7b72in Te6edf3get_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffrpc_config_snippetTa5d6ff"Tb4b4b4]
Tff7b72class T56d364PatchRequestTb4b4b4:
Tf0883e@staticmethod
Tff7b72async Tff7b72def Td2a8ffjsonTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6ffrespond_to_probesTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffunixTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffmeshchatxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_management_allowedTa5d6ff"Tb4b4b4: Tb4b4b4[
Ta5d6ff"Ta5d6ff00112233445566778899aabbccddeeffTa5d6ff"Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffenable_remote_managementTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Tb4b4b4}
Te6edf3patch_response Tff7b72= Tff7b72await Te6edf3patch_handlerTb4b4b4(Te6edf3PatchRequestTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3patch_data Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3patch_responseTff7b72.Td2a8ffbodyTb4b4b4)
Tff7b72assert Te6edf3patch_responseTff7b72.Td2a8ffstatus Tff7b72== T79c0ff200
Tff7b72assert Te6edf3patch_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3patch_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffrespond_to_probesTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3patch_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffenable_remote_managementTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3patch_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffremote_management_allowedTa5d6ff"Tb4b4b4] Tff7b72== Tb4b4b4[
Ta5d6ff"Ta5d6ff00112233445566778899aabbccddeeffTa5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72assert Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffremote_management_allowedTa5d6ff"Tb4b4b4] Tff7b72== Tb4b4b4[
Ta5d6ff"Ta5d6ff00112233445566778899aabbccddeeffTa5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72assert Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffenable_remote_managementTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffYesTa5d6ff"
Tff7b72assert Te6edf3patch_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffunixTa5d6ff"
Tff7b72assert Te6edf3patch_dataTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffmeshchatxTa5d6ff"
Tff7b72assert Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffYesTa5d6ff"
Tff7b72assert Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffunixTa5d6ff"
Tff7b72assert Te6edf3configTff7b72.Td2a8ffwrite_called Tff7b72is Tff7b72True
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulumTff7b72.Td2a8ffassert_awaited_onceTb4b4b4(Tb4b4b4)
Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_reticulum_instance_rejects_bad_typeTb4b4b4(Te6edf3temp_dirTb4b4b4)Tb4b4b4:
Te6edf3config Tff7b72= Te6edf3ConfigDictTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4}Tb4b4b4, Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4}Tb4b4b4)
Tff7b72with Tb4b4b4(
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.generate_ssl_certificateTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.ReticulumTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_rnsTb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.TransportTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffLXMF.LXMRouterTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3mock_reticulum Tff7b72= Te6edf3mock_rnsTff7b72.Td2a8ffreturn_value
Te6edf3mock_reticulumTff7b72.Td2a8ffconfig Tff7b72= Te6edf3config
Te6edf3mock_reticulumTff7b72.Td2a8ffconfigpath Tff7b72= Ta5d6ff"Ta5d6ff/tmp/mock_configTa5d6ff"
Te6edf3mock_reticulumTff7b72.Td2a8ffis_connected_to_shared_instance Tff7b72= Tff7b72False
Te6edf3mock_reticulumTff7b72.Td2a8ffshare_instance Tff7b72= Tff7b72True
Te6edf3mock_reticulumTff7b72.Td2a8fftransport_enabledTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3app_instance Tff7b72= Te6edf3ReticulumMeshChatTb4b4b4(
Te6edf3identityTff7b72=Te6edf3build_identityTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3storage_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Te6edf3reticulum_config_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Tb4b4b4)
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulum Tff7b72= Te6edf3AsyncMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3patch_handler Tff7b72= Tff7b72await Te6edf3find_route_handlerTb4b4b4(
Te6edf3app_instanceTb4b4b4,
Ta5d6ff"Ta5d6ff/api/v1/reticulum/instanceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffPATCHTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72class T56d364PatchRequestTb4b4b4:
Tf0883e@staticmethod
Tff7b72async Tff7b72def Td2a8ffjsonTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4{Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffudpTa5d6ff"Tb4b4b4}
Te6edf3response Tff7b72= Tff7b72await Te6edf3patch_handlerTb4b4b4(Te6edf3PatchRequestTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3responseTff7b72.Td2a8ffstatus Tff7b72== T79c0ff400
Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_reticulum_instance_rejects_bad_instance_nameTb4b4b4(Te6edf3temp_dirTb4b4b4)Tb4b4b4:
Te6edf3config Tff7b72= Te6edf3ConfigDictTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4}Tb4b4b4, Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4}Tb4b4b4)
Tff7b72with Tb4b4b4(
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.generate_ssl_certificateTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.ReticulumTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_rnsTb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.TransportTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffLXMF.LXMRouterTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3mock_reticulum Tff7b72= Te6edf3mock_rnsTff7b72.Td2a8ffreturn_value
Te6edf3mock_reticulumTff7b72.Td2a8ffconfig Tff7b72= Te6edf3config
Te6edf3mock_reticulumTff7b72.Td2a8ffconfigpath Tff7b72= Ta5d6ff"Ta5d6ff/tmp/mock_configTa5d6ff"
Te6edf3mock_reticulumTff7b72.Td2a8ffis_connected_to_shared_instance Tff7b72= Tff7b72False
Te6edf3mock_reticulumTff7b72.Td2a8ffshare_instance Tff7b72= Tff7b72True
Te6edf3mock_reticulumTff7b72.Td2a8fftransport_enabledTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3app_instance Tff7b72= Te6edf3ReticulumMeshChatTb4b4b4(
Te6edf3identityTff7b72=Te6edf3build_identityTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3storage_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Te6edf3reticulum_config_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Tb4b4b4)
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulum Tff7b72= Te6edf3AsyncMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3patch_handler Tff7b72= Tff7b72await Te6edf3find_route_handlerTb4b4b4(
Te6edf3app_instanceTb4b4b4,
Ta5d6ff"Ta5d6ff/api/v1/reticulum/instanceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffPATCHTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72class T56d364PatchRequestTb4b4b4:
Tf0883e@staticmethod
Tff7b72async Tff7b72def Td2a8ffjsonTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4{Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbad nameTa5d6ff"Tb4b4b4}
Te6edf3response Tff7b72= Tff7b72await Te6edf3patch_handlerTb4b4b4(Te6edf3PatchRequestTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3responseTff7b72.Td2a8ffstatus Tff7b72== T79c0ff400
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulumTff7b72.Td2a8ffassert_not_awaitedTb4b4b4(Tb4b4b4)
Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_reticulum_instance_empty_patch_noopTb4b4b4(Te6edf3temp_dirTb4b4b4)Tb4b4b4:
Te6edf3config Tff7b72= Te6edf3ConfigDictTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72with Tb4b4b4(
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.generate_ssl_certificateTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.ReticulumTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_rnsTb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.TransportTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffLXMF.LXMRouterTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3mock_reticulum Tff7b72= Te6edf3mock_rnsTff7b72.Td2a8ffreturn_value
Te6edf3mock_reticulumTff7b72.Td2a8ffconfig Tff7b72= Te6edf3config
Te6edf3mock_reticulumTff7b72.Td2a8ffconfigpath Tff7b72= Ta5d6ff"Ta5d6ff/tmp/mock_configTa5d6ff"
Te6edf3mock_reticulumTff7b72.Td2a8ffis_connected_to_shared_instance Tff7b72= Tff7b72False
Te6edf3mock_reticulumTff7b72.Td2a8ffshare_instance Tff7b72= Tff7b72True
Te6edf3mock_reticulumTff7b72.Td2a8fftransport_enabledTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3app_instance Tff7b72= Te6edf3ReticulumMeshChatTb4b4b4(
Te6edf3identityTff7b72=Te6edf3build_identityTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3storage_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Te6edf3reticulum_config_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Tb4b4b4)
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulum Tff7b72= Te6edf3AsyncMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3patch_handler Tff7b72= Tff7b72await Te6edf3find_route_handlerTb4b4b4(
Te6edf3app_instanceTb4b4b4,
Ta5d6ff"Ta5d6ff/api/v1/reticulum/instanceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffPATCHTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72class T56d364PatchRequestTb4b4b4:
Tf0883e@staticmethod
Tff7b72async Tff7b72def Td2a8ffjsonTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4{Tb4b4b4}
Te6edf3response Tff7b72= Tff7b72await Te6edf3patch_handlerTb4b4b4(Te6edf3PatchRequestTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3responseTff7b72.Td2a8ffstatus Tff7b72== T79c0ff200
Tff7b72assert Te6edf3configTff7b72.Td2a8ffwrite_called Tff7b72is Tff7b72False
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulumTff7b72.Td2a8ffassert_not_awaitedTb4b4b4(Tb4b4b4)
Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_reticulum_instance_clears_optional_fieldsTb4b4b4(Te6edf3temp_dirTb4b4b4)Tb4b4b4:
Te6edf3config Tff7b72= Te6edf3ConfigDictTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftcpTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcustomTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72with Tb4b4b4(
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.generate_ssl_certificateTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.ReticulumTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_rnsTb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.TransportTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffLXMF.LXMRouterTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3mock_reticulum Tff7b72= Te6edf3mock_rnsTff7b72.Td2a8ffreturn_value
Te6edf3mock_reticulumTff7b72.Td2a8ffconfig Tff7b72= Te6edf3config
Te6edf3mock_reticulumTff7b72.Td2a8ffconfigpath Tff7b72= Ta5d6ff"Ta5d6ff/tmp/mock_configTa5d6ff"
Te6edf3mock_reticulumTff7b72.Td2a8ffis_connected_to_shared_instance Tff7b72= Tff7b72False
Te6edf3mock_reticulumTff7b72.Td2a8ffshare_instance Tff7b72= Tff7b72True
Te6edf3mock_reticulumTff7b72.Td2a8fftransport_enabledTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3app_instance Tff7b72= Te6edf3ReticulumMeshChatTb4b4b4(
Te6edf3identityTff7b72=Te6edf3build_identityTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3storage_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Te6edf3reticulum_config_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Tb4b4b4)
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulum Tff7b72= Te6edf3AsyncMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3patch_handler Tff7b72= Tff7b72await Te6edf3find_route_handlerTb4b4b4(
Te6edf3app_instanceTb4b4b4,
Ta5d6ff"Ta5d6ff/api/v1/reticulum/instanceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffPATCHTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72class T56d364PatchRequestTb4b4b4:
Tf0883e@staticmethod
Tff7b72async Tff7b72def Td2a8ffjsonTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4{Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4}
Te6edf3response Tff7b72= Tff7b72await Te6edf3patch_handlerTb4b4b4(Te6edf3PatchRequestTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3responseTff7b72.Td2a8ffstatus Tff7b72== T79c0ff200
Tff7b72assert Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff" Tff7b72not Tff7b72in Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4]
Tff7b72assert Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff" Tff7b72not Tff7b72in Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4]
Tf0883e@givenTb4b4b4(
Te6edf3payloadTff7b72=Te6edf3stTff7b72.Td2a8fffixed_dictionariesTb4b4b4(
Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3optionalTff7b72=Tb4b4b4{
Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(
Te6edf3stTff7b72.Td2a8ffbooleansTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffsampled_fromTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4, T79c0ff1Tb4b4b4, T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4: Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(
Te6edf3stTff7b72.Td2a8ffbooleansTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffsampled_fromTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ffyesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffrespond_to_probesTa5d6ff"Tb4b4b4: Te6edf3stTff7b72.Td2a8ffbooleansTb4b4b4(Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffenable_remote_managementTa5d6ff"Tb4b4b4: Te6edf3stTff7b72.Td2a8ffbooleansTb4b4b4(Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffshared_instance_typeTa5d6ff"Tb4b4b4: Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(
Te6edf3stTff7b72.Td2a8ffnoneTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffsampled_fromTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6fftcpTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffunixTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTCPTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffUnixTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffudpTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffquicTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff"Tb4b4b4: Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(
Te6edf3stTff7b72.Td2a8ffnoneTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffsampled_fromTb4b4b4(
Tb4b4b4[Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmeshchatxTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbad nameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffxTa5d6ff" Tff7b72* T79c0ff65Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4]Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8fftextTb4b4b4(Te6edf3min_sizeTff7b72=T79c0ff0Tb4b4b4, Te6edf3max_sizeTff7b72=T79c0ff80Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tf0883e@settingsTb4b4b4(
Te6edf3max_examplesTff7b72=T79c0ff60Tb4b4b4,
Te6edf3deadlineTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3suppress_health_checkTff7b72=Tb4b4b4[Te6edf3HealthCheckTff7b72.Td2a8fffunction_scoped_fixtureTb4b4b4]Tb4b4b4,
Tb4b4b4)
Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_reticulum_instance_patch_fuzz_never_500Tb4b4b4(Te6edf3payloadTb4b4b4, Te6edf3temp_dirTb4b4b4)Tb4b4b4:
Te6edf3config Tff7b72= Te6edf3ConfigDictTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72with Tb4b4b4(
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.generate_ssl_certificateTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.ReticulumTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_rnsTb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffRNS.TransportTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffLXMF.LXMRouterTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3mock_reticulum Tff7b72= Te6edf3mock_rnsTff7b72.Td2a8ffreturn_value
Te6edf3mock_reticulumTff7b72.Td2a8ffconfig Tff7b72= Te6edf3config
Te6edf3mock_reticulumTff7b72.Td2a8ffconfigpath Tff7b72= Ta5d6ff"Ta5d6ff/tmp/mock_configTa5d6ff"
Te6edf3mock_reticulumTff7b72.Td2a8ffis_connected_to_shared_instance Tff7b72= Tff7b72False
Te6edf3mock_reticulumTff7b72.Td2a8ffshare_instance Tff7b72= Tff7b72True
Te6edf3mock_reticulumTff7b72.Td2a8fftransport_enabledTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3app_instance Tff7b72= Te6edf3ReticulumMeshChatTb4b4b4(
Te6edf3identityTff7b72=Te6edf3build_identityTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3storage_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Te6edf3reticulum_config_dirTff7b72=Te6edf3temp_dirTb4b4b4,
Tb4b4b4)
Te6edf3app_instanceTff7b72.Td2a8ffreload_reticulum Tff7b72= Te6edf3AsyncMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3patch_handler Tff7b72= Tff7b72await Te6edf3find_route_handlerTb4b4b4(
Te6edf3app_instanceTb4b4b4,
Ta5d6ff"Ta5d6ff/api/v1/reticulum/instanceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffPATCHTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72class T56d364PatchRequestTb4b4b4:
Tf0883e@staticmethod
Tff7b72async Tff7b72def Td2a8ffjsonTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3payload
Te6edf3response Tff7b72= Tff7b72await Te6edf3patch_handlerTb4b4b4(Te6edf3PatchRequestTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3responseTff7b72.Td2a8ffstatus Tff7b72in Tb4b4b4(T79c0ff200Tb4b4b4, T79c0ff400Tb4b4b4)
Te6edf3body Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3responseTff7b72.Td2a8ffbodyTb4b4b4)
Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3bodyTb4b4b4, Tffa657dictTb4b4b4)
Tff7b72if Te6edf3responseTff7b72.Td2a8ffstatus Tff7b72== T79c0ff200Tb4b4b4:
Tff7b72assert Ta5d6ff"Ta5d6ffinstanceTa5d6ff" Tff7b72in Te6edf3body
Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3bodyTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4)Tb4b4b4, Tffa657boolTb4b4b4)
Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3bodyTb4b4b4[Ta5d6ff"Ta5d6ffinstanceTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4)Tb4b4b4, Tffa657boolTb4b4b4)
Tff7b72def Td2a8fftest_build_reticulum_instance_settings_prefers_config_over_liveTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3app Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ff_get_reticulum_section Tff7b72= Tff7b72lambdaTb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffrpc_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffaaTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Ta5d6ff"Ta5d6ffinstance_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4,
Tb4b4b4}
Te6edf3appTff7b72.Td2a8ff_parse_rns_config_bool Tff7b72= Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_parse_rns_config_bool
Te6edf3appTff7b72.Td2a8ff_get_reticulum_rpc_key_hex Tff7b72= Tff7b72lambdaTb4b4b4: Tb4b4b4(
Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_get_reticulum_rpc_key_hexTb4b4b4(Te6edf3appTb4b4b4)
Tb4b4b4)
Te6edf3appTff7b72.Td2a8ffreticulum Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ffreticulumTff7b72.Td2a8ffshare_instance Tff7b72= Tff7b72True
Te6edf3appTff7b72.Td2a8ffreticulumTff7b72.Td2a8ffis_connected_to_shared_instance Tff7b72= Tff7b72False
Te6edf3appTff7b72.Td2a8ffreticulumTff7b72.Td2a8fftransport_enabled Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3appTff7b72.Td2a8ffreticulumTff7b72.Td2a8ffrpc_key Tff7b72= Tff7b72None
Te6edf3settings Tff7b72= Te6edf3ReticulumMeshChatTff7b72.Td2a8ff_build_reticulum_instance_settingsTb4b4b4(Te6edf3appTb4b4b4)
Tff7b72assert Te6edf3settingsTb4b4b4[Ta5d6ff"Ta5d6ffshare_instanceTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72assert Te6edf3settingsTb4b4b4[Ta5d6ff"Ta5d6fflocal_hops_deltaTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72assert Te6edf3settingsTb4b4b4[Ta5d6ff"Ta5d6ffrpc_config_snippetTa5d6ff"Tb4b4b4]
Tff7b72assert Ta5d6ff"Ta5d6ffrpc_key = Ta5d6ff" Tff7b72in Te6edf3settingsTb4b4b4[Ta5d6ff"Ta5d6ffrpc_config_snippetTa5d6ff"Tb4b4b4]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────